package com.wy.project.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wy.project.entity.ProductApprovalInfo;
import com.wy.project.entity.ProductInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wy.project.entity.ProductInfoTerminalType;
import com.wy.project.entity.ProductMsg;

import java.util.List;

/**
 * <p>
 *  产品基本信息服务类
 * </p>
 *
 * @author Apollo
 * @since 2021-01-16
 */
public interface IProductInfoService extends IService<ProductInfo> {

    /**
     * 产品基本信息存为草稿(创建)
     * @param productInfo 要保存的信息
     */
    public void save4Draft(ProductInfo productInfo);


    /**
     * 产品基本信息提交审核(创建)
     * @param productInfo 要提交审核的信息
     */
    public void save4Approval(ProductInfo productInfo);


    /**
     * 产品基本信息存为草稿(修改)
     * @param productInfo 要修改的信息
     */
    public void edit4Draft(ProductInfo productInfo);


    /**
     * 产品基本信息提交审核(修改)
     * @param productInfo 要提交审核的信息
     */
    public void edit4Approval(ProductInfo productInfo);


    /**
     * 产品基本信息审核通过
     * @param productApprovalInfo 审核记录
     */
    public void  pass(ProductApprovalInfo productApprovalInfo);


    /**
     * 产品基本信息审核不通过
     * @param productApprovalInfo 审核记录
     */
    public void  notPass(ProductApprovalInfo productApprovalInfo);


    /**
     * 产品基本信息再次审核
     * 审核失败之后,进行信息的修订,之后提交审核
     * @param productInfo 要审核的信息
     */
    public void revise(ProductInfo productInfo);


    /**
     * 发布
     * @param code 要发布的标识
     */
    public void publish(String code);


    /**
     * 产品基本信息作废
     * @param code 要作废的信息标识
     */
    public void abort(String code);


    /**
     * 产品基本信息分页查询
     * @param page 分页的参数
     * @return 分页信息
     */
    public Page<ProductInfo> findPage(Page<ProductInfo> page);


    /**
     * 产品基本信息分页查询
     * @param current 每页多少条
     * @param size 当前页
     * @return 分页信息
     */
    public Page<ProductInfo> findPage(Integer current, Integer size);


    /**
     * 产品基本信息查看详情
     * @param code 要查看的标识
     * @return 详情信息
     */
    public ProductInfo detail(String code);

    /**
     * 查询终端类型
     * @param code
     * @return  终端类型的集合
     */
    public List<ProductInfoTerminalType> findProductInfoTerminalType(String code);


    /**
     * 查看产品消息
     * @return 查询的信息
     */
    public List<ProductMsg> findProductMsg();

}
